[express] AWS App Runnerで正しいprotocolを取得する[小ネタ]
App RunnerはWebアプリ実行に必要なネットワークやLB設定などを
フルマネージドに提供してくれるサービスです。
GithubリポジトリにWebアプリのコードを用意しておけば、
それを自動でデプロイしてくれてドメインも割当てしてくれます。
※もう少し詳しいApp Runner記事はここ参照
正しいprotocolが取得できない
node + expressアプリの動作検証のため、
3000番ポートで起動するように設定し、App Runnerで自動デプロイしました。
そして、httpsのデフォルトドメインが割り当てられました。
サンプルのソースは↓です。
const express = require('express'); const app = express(); app.get('/', function (req, res) { //httpが表示される console.log("protocol : " + req.protocol); res.send('Hello App Runner'); }); app.listen(3000);
割り当てられたドメインにアクセスすると、protocolが常にhttpで表示されてしまいます。
trust proxy で解決
App RunnerによってデプロイされたWebアプリはLBの後ろで動いているので、
app.enableでtrust proxyをセットしてあげればOK。
・・・ const app = express(); app.enable('trust proxy'); ・・・
これで正しいprotocolが取得できます。